package ocio.utils;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
 * Clase encargada contener y proporcionar listas y variables cuyos valores 
 * permanecen constantes para todos los usuarios durante la sesión.
 * @author Esther García Galán
 * @author Rubén Gómez Vales
 * @version 1.0 13/05/2014
 */
@SuppressWarnings("all")
public class Constantes {
	public final static int NUM_MAX_PLAZAS = 6;
	private static List<String> listaNumPlazas; 	
	private static List<String> listaPrecios; 	
	private static List<String> listaTipos;

	/**
	 * Devuelve una lista de enteros que representan los meses del año para su uso en combos.
	 * @return listaMeses Lista de enteros representando los meses del año.
	 */
	public static List<Integer> getListameses(){
		List<Integer> listaMeses = new ArrayList<Integer>();
		for (int i=1;i<13;i++){
			listaMeses.add(i);
		}
		return listaMeses;
	}
	
	/**
	 * Devuelve una lista de enteros que representan los días de un mes para su uso en combos.
	 * @param dias Número de días que tiene el mes.
	 * @return listaDias Lista de enteros representando los días del meses.
	 */
	public static List<Integer> getListaDias(int dias){
		List<Integer> listaDias = new ArrayList<Integer>();
		for (int i=1;i<dias+1;i++){
			listaDias.add(i);
		}
		return listaDias;
	}
	
	/**
	 * Devuelve una lista de dos enteros que representan los dos próximos años, para su uso en combos.
	 * @return listaAnios Lista de enteros representando los dos próximos años.
	 */
	public static List<Integer> getListaAnios(){
		List<Integer> listaAnios = new ArrayList<Integer>();
		Calendar c = new GregorianCalendar();
		int anio = (c.get(Calendar.YEAR));
		listaAnios.add(anio);listaAnios.add(anio+1);
		return listaAnios;
	}
	
	/**
	 * Devuelve una lista de cadenas de texto representando los límites en los precios que 
	 * se utilizan en los combos de búsqueda de ofertas.
	 * @return listaaPrecios Lista de enteros representando los límites en los precios.
	 */
	public static List<String> getListaPrecios(){
		if (listaPrecios==null){
			listaPrecios = new ArrayList<String>();

			listaPrecios.add("Todos");
			for (int i = 10; i<60;i=i+10) {
				listaPrecios.add("< "+ i +" euros");
			}
		}
		return listaPrecios;
	}

	/**
	 * Devuelve una lista de cadenas de texto representando número de plazas que 
	 * se utilizan en los combos de búsqueda de ofertas.
	 * @return listaNumPlazas Lista de cadenas de texto representando los números de plazas.
	 */
	public static List<String> getListaNumPlazas() {
		if (listaNumPlazas==null){
			listaNumPlazas = new ArrayList<String>();
			for (int i = 1; i<Constantes.NUM_MAX_PLAZAS+1;i++) {
				listaNumPlazas.add(String.valueOf(i));
			}
		}
		return listaNumPlazas;
	}

	/**
	 * Devuelve una lista de cadenas de texto representando los tipos de producto 
	 * para su uso en combos de búsqueda de ofertas.
	 * @return listaTipos Lista de cadenas de texto representando los números de plazas.
	 */
	public static List<String> getListaTipos() {
		if (listaTipos==null){
			listaTipos = new ArrayList<String>();
			listaTipos.add("Restaurantes");
			listaTipos.add("Espectaculos");
			listaTipos.add("Actividades");
		}

		
		
		
		return listaTipos;
	}

	public static void setListaTipos(List<String> listaTipos) {
		Constantes.listaTipos = listaTipos;
	}


	
	
}
